using Microsoft.EntityFrameworkCore.Migrations;

namespace Server.Models.Data;

public partial class Initial : Migration
{
  protected override void Up(MigrationBuilder migrationBuilder)
  {
    migrationBuilder.CreateTable(
        name: "AspNetRoles",
        columns: table =>
        {
          return new
          {
            Id = table.Column<string>(type: "TEXT", nullable: false),
            Name = table.Column<string>(type: "TEXT", maxLength: 256, nullable: true),
            NormalizedName = table.Column<string>(type: "TEXT", maxLength: 256, nullable: true),
            ConcurrencyStamp = table.Column<string>(type: "TEXT", nullable: true)
          };
        },
        constraints: table =>
        {
          table.PrimaryKey("PK_AspNetRoles", x => x.Id);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUsers",
        columns: table =>
        {
          return new
          {
            Id = table.Column<string>(type: "TEXT", nullable: false),
            UserName = table.Column<string>(type: "TEXT", maxLength: 256, nullable: true),
            NormalizedUserName = table.Column<string>(type: "TEXT", maxLength: 256, nullable: true),
            Email = table.Column<string>(type: "TEXT", maxLength: 256, nullable: true),
            NormalizedEmail = table.Column<string>(type: "TEXT", maxLength: 256, nullable: true),
            EmailConfirmed = table.Column<bool>(type: "INTEGER", nullable: false),
            PasswordHash = table.Column<string>(type: "TEXT", nullable: true),
            SecurityStamp = table.Column<string>(type: "TEXT", nullable: true),
            ConcurrencyStamp = table.Column<string>(type: "TEXT", nullable: true),
            PhoneNumber = table.Column<string>(type: "TEXT", nullable: true),
            PhoneNumberConfirmed = table.Column<bool>(type: "INTEGER", nullable: false),
            TwoFactorEnabled = table.Column<bool>(type: "INTEGER", nullable: false),
            LockoutEnd = table.Column<DateTimeOffset>(type: "TEXT", nullable: true),
            LockoutEnabled = table.Column<bool>(type: "INTEGER", nullable: false),
            AccessFailedCount = table.Column<int>(type: "INTEGER", nullable: false)
          };
        },
        constraints: table =>
        {
          table.PrimaryKey("PK_AspNetUsers", x => x.Id);
        });

    migrationBuilder.CreateTable(
        name: "AspNetRoleClaims",
        columns: table =>
        {
          return new
          {
            Id = table.Column<int>(type: "INTEGER", nullable: false)
                            .Annotation("Sqlite:Autoincrement", true),
            RoleId = table.Column<string>(type: "TEXT", nullable: false),
            ClaimType = table.Column<string>(type: "TEXT", nullable: true),
            ClaimValue = table.Column<string>(type: "TEXT", nullable: true)
          };
        },
        constraints: table =>
        {
          table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id);
          table.ForeignKey(
                    name: "FK_AspNetRoleClaims_AspNetRoles_RoleId",
                    column: x => x.RoleId,
                    principalTable: "AspNetRoles",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserClaims",
        columns: table =>
        {
          return new
          {
            Id = table.Column<int>(type: "INTEGER", nullable: false)
                            .Annotation("Sqlite:Autoincrement", true),
            UserId = table.Column<string>(type: "TEXT", nullable: false),
            ClaimType = table.Column<string>(type: "TEXT", nullable: true),
            ClaimValue = table.Column<string>(type: "TEXT", nullable: true)
          };
        },
        constraints: table =>
        {
          table.PrimaryKey("PK_AspNetUserClaims", x => x.Id);
          table.ForeignKey(
                    name: "FK_AspNetUserClaims_AspNetUsers_UserId",
                    column: x => x.UserId,
                    principalTable: "AspNetUsers",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserLogins",
        columns: table =>
        {
          return new
          {
            LoginProvider = table.Column<string>(type: "TEXT", nullable: false),
            ProviderKey = table.Column<string>(type: "TEXT", nullable: false),
            ProviderDisplayName = table.Column<string>(type: "TEXT", nullable: true),
            UserId = table.Column<string>(type: "TEXT", nullable: false)
          };
        },
        constraints: table =>
        {
          table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey });
          table.ForeignKey(
                    name: "FK_AspNetUserLogins_AspNetUsers_UserId",
                    column: x => x.UserId,
                    principalTable: "AspNetUsers",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserRoles",
        columns: table =>
        {
          return new
          {
            UserId = table.Column<string>(type: "TEXT", nullable: false),
            RoleId = table.Column<string>(type: "TEXT", nullable: false)
          };
        },
        constraints: table =>
        {
          table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId });
          table.ForeignKey(
                    name: "FK_AspNetUserRoles_AspNetRoles_RoleId",
                    column: x => x.RoleId,
                    principalTable: "AspNetRoles",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
          table.ForeignKey(
                    name: "FK_AspNetUserRoles_AspNetUsers_UserId",
                    column: x => x.UserId,
                    principalTable: "AspNetUsers",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateTable(
        name: "AspNetUserTokens",
        columns: table =>
        {
          return new
          {
            UserId = table.Column<string>(type: "TEXT", nullable: false),
            LoginProvider = table.Column<string>(type: "TEXT", nullable: false),
            Name = table.Column<string>(type: "TEXT", nullable: false),
            Value = table.Column<string>(type: "TEXT", nullable: true)
          };
        },
        constraints: table =>
        {
          table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name });
          table.ForeignKey(
                    name: "FK_AspNetUserTokens_AspNetUsers_UserId",
                    column: x => x.UserId,
                    principalTable: "AspNetUsers",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
        });

    migrationBuilder.CreateIndex(
        name: "IX_AspNetRoleClaims_RoleId",
        table: "AspNetRoleClaims",
        column: "RoleId");

    migrationBuilder.CreateIndex(
        name: "RoleNameIndex",
        table: "AspNetRoles",
        column: "NormalizedName",
        unique: true);

    migrationBuilder.CreateIndex(
        name: "IX_AspNetUserClaims_UserId",
        table: "AspNetUserClaims",
        column: "UserId");

    migrationBuilder.CreateIndex(
        name: "IX_AspNetUserLogins_UserId",
        table: "AspNetUserLogins",
        column: "UserId");

    migrationBuilder.CreateIndex(
        name: "IX_AspNetUserRoles_RoleId",
        table: "AspNetUserRoles",
        column: "RoleId");

    migrationBuilder.CreateIndex(
        name: "EmailIndex",
        table: "AspNetUsers",
        column: "NormalizedEmail");

    migrationBuilder.CreateIndex(
        name: "UserNameIndex",
        table: "AspNetUsers",
        column: "NormalizedUserName",
        unique: true);
  }

  protected override void Down(MigrationBuilder migrationBuilder)
  {
    migrationBuilder.DropTable(
        name: "AspNetRoleClaims");

    migrationBuilder.DropTable(
        name: "AspNetUserClaims");

    migrationBuilder.DropTable(
        name: "AspNetUserLogins");

    migrationBuilder.DropTable(
        name: "AspNetUserRoles");

    migrationBuilder.DropTable(
        name: "AspNetUserTokens");

    migrationBuilder.DropTable(
        name: "AspNetRoles");

    migrationBuilder.DropTable(
        name: "AspNetUsers");
  }
}
